/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package DAO;

import entity.Comanda;
import entity.Mesas;
import entity.Usuarios;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.TemporalType;

/**
 *
 * @author FRANCO
 */
@Stateless
public class ComandaFacade extends AbstractFacade<Comanda> implements ComandaFacadeRemote {

    @PersistenceContext(unitName = "socafe-ejbPU")
    private EntityManager em;

    @Override
    protected EntityManager getEntityManager() {
        return em;
    }

    public ComandaFacade() {
        super(Comanda.class);
    }

    @Override
    public boolean crearComanda(String idUsuario, boolean estatus, int idMesa) {

        Usuarios usuario = new Usuarios(idUsuario);
        Mesas mesa = new Mesas(idMesa);
        Comanda comanda = new Comanda();
        comanda.setIdcomanda(Integer.MIN_VALUE);
        comanda.setIdusuario(usuario);
        comanda.setEstatus(estatus);
        comanda.setIdmesa(mesa);
        comanda.setFechacreacion(Calendar.getInstance().getTime());

        try {
            create(comanda);
            return true;

        } catch (Exception ex) {
            return false;
        }

    }

    @Override
    public List<Comanda> rangeComandas(Date fechaInicio, Date fechaFin) {        
        
        return getEntityManager().createNamedQuery("Comanda.rangeFechas").setParameter("fechaInicio", fechaInicio, TemporalType.DATE).setParameter("fechaFin", fechaFin, TemporalType.DATE).getResultList();

    }

    @Override  
    public int getLastInsert() {
        int idComandaCreada = Integer.parseInt(getEntityManager().createNativeQuery("SELECT LAST_INSERT_ID()").getSingleResult().toString());
        return idComandaCreada;
    }

    @Override
    public List<Comanda> findByEstatus(boolean estatus) {
        return getEntityManager().createNamedQuery("Comanda.findByEstatus").setParameter("estatus", estatus).getResultList();
    }

}
